<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        //apply() 方法调用一个具有给定this值的函数，以及以一个数组（或类数组对象）的形式提供的参数。
        //语法：func.apply(thisArg, [argsArray])
        //1.用 apply 将数组各项添加到另一个数组  由于push接受可变数量的参数，所以也可以一次追加多个元素
        /*
            但是，如果push的参数是数组，它会将该数组作为单个元素添加，而不是将这个数组内的每个元素添加进去，
            因此我们最终会得到一个数组内的数组。如果不想这样呢？concat符合我们的需求，但它并不是将元素添加到现有数组，
            而是创建并返回一个新数组。 然而我们需要将元素追加到现有数组......那么怎么做好？难道要写一个循环吗？别当然不是！
        */
        let arr = ['a', 'b'];
        let arr1 = [0, 1, 2];

        // let newArr = arr + arr1;
        // console.log(newArr);//a,b0,1,2
        // arr.push(arr1);  //将arr1作为单个数组追加到数组中
        // console.log(arr);//['a', 'b', Array(3)] =>['a','b',[0,1,2]]
        // 如果要 变成这样 ['a', 'b', 0, 1, 2]
        // let newArr = arr.concat(arr1);
        // console.log(arr);//['a', 'b']     //没有改变原来的数组
        // console.log(newArr);//['a', 'b', 0, 1, 2]
        //将现在的数组追加元素 
        arr.push.apply(arr, arr1);
        console.log(arr); //['a', 'b', 0, 1, 2]


        //使用apply和内置函数   取数组中的最大值和最小值  不需要循环 ，借用方法
        let number = [5, 6, 2, 3, 7]
        let max = Math.max.apply(null, number);
        let min = Math.min.apply(null, number);
        console.log(max, min); //7 2
    </script>
</body>

</html>